package com.cpd.blog.service;


import com.cpd.blog.dto.Article.ArticleReq;
import com.cpd.blog.dto.Page.PageParams;
import com.cpd.blog.dto.Result;

/**
 * @author Copydown
 * @date 2021/8/17 20:07
 */
public interface ArticleService {
    /**
     * 分页查询 文章列表
     *
     * @param pageParams pageParams
     * @return Result
     */
    Result listArticle(PageParams pageParams);

    /**
     * 根据 当前用户 查询属于该用户的所有文章
     *
     * @param pageParams pageParams
     * @return Result
     */
    Result listUserArticle(PageParams pageParams);

    /**
     * 最热文章
     *
     * @return Result
     */
    Result hotArticle();

    /**
     * 最新文章
     *
     * @return Result
     */
    Result newArticles();

    /**
     * 文章归档
     *
     * @return
     */
    Result listArchives();

    /**
     * 通过 articleId 搜索文章
     *
     * @param articleId articleId
     * @return Result
     */
    Result findArticleById(Long articleId);

    /**
     * 文章发布
     *
     * @param articleReq articleReq
     * @return Result
     */
    Result publish(ArticleReq articleReq);

    /**
     * 修改文章
     *
     * @param articleReq articleReq
     * @return Result
     */
    Result edit(ArticleReq articleReq);

    /**
     * 文章评论 +1
     *
     * @param articleId articleId
     * @return
     */
    boolean commitIncr(Long articleId);

    /**
     * 删除 文章以及其下的评论
     *
     * @param articleId articleId
     * @return Result
     */
    Result deleteWithComment(Long articleId);


}
